Configuring an input device for use with a software application can be a difficult task. Some solutions use pre-defined input device configurations. For example, a software application may come with pre-defined keyboard keys and mouse inputs associated with the various actions that the software application can perform (e.g., word processing commands for a word processing application, photo editing commands for a photo editing application, or video game actions for a video game). A pre-defined configuration can be sufficient in some situations, but has a number of limitations. For example, a pre-defined configuration may not allow the user to change the configuration, and the pre-defined configuration may not be intuitive to the user.
Other solutions provide some customization of the input device configuration. For example, the user may be able to assign specific keys to perform specific commands within the software application. However, such solutions may not allow the user to configure the input in the manner that the user desires or in the manner which is most efficient for the user.